/**
 * 国际化
 * 文件名规范: en.json、zh-Hans.json、zh-Hant.json
 */

// 默认语言
export const defaultLang = 'zh-CN';

/**
 * 切换语言
 * @param {*} lang 语言的 key
 * @param {*} vm 组件实例
 */
export const setLocale = (lang, vm) => {
    uni.setLocale(lang);
    vm.$i18n.locale = lang;
};

/**
 * 全局自动导入自定义语言包
 */
export function importAllLocales() {
    const modules = {};
    try {
        // 导入 @/common 下文件，包含子目录，文件名为：[/\\]locales[/\\](\w|-?)+\.json$
        const viewsRequireContext = require.context('@/common', true, /[/\\]locales[/\\](\w|-?)+\.json$/); 
        viewsRequireContext.keys().forEach(fileName => {
            // 获取内容
            const modulesConent = viewsRequireContext(fileName);
            // 获取 PascalCase 命名
            const modulesName = fileName.replace(/(.*\/)*([^.]+).*/ig,"$2");
            
            if(modulesConent) {
                if(modules[modulesName]) {
                    modules[modulesName] = {
                        ...modules[modulesName],
                        ...modulesConent
                    }
                } else {
                    modules[modulesName] = modulesConent; 
                }
            }
        });
        
        // 导入 @/pages 下文件，包含子目录，文件名为：[/\\]locales[/\\](\w|-?)+\.json$
        const layoutsRequireContext = require.context('@/pages', true, /[/\\]locales[/\\](\w|-?)+\.json$/); 
        layoutsRequireContext.keys().forEach(fileName => {
            // 获取内容
            const modulesConent = layoutsRequireContext(fileName);
            // 获取 PascalCase 命名
            const modulesName = fileName.replace(/(.*\/)*([^.]+).*/ig,"$2");
            
            if(modulesConent) {
                if(modules[modulesName]) {
                    modules[modulesName] = {
                        ...modules[modulesName],
                        ...modulesConent
                    }
                } else {
                    modules[modulesName] = modulesConent; 
                }
            }
        });

        // 导入 @/components 下文件，包含子目录，文件名为：[/\\]locales[/\\](\w|-?)+\.json$
        const componentsRequireContext = require.context('@/components', true, /[/\\]locales[/\\](\w|-?)+\.json$/); 
        componentsRequireContext.keys().forEach(fileName => {
            // 获取内容
            const modulesConent = componentsRequireContext(fileName);
            // 获取 PascalCase 命名
            const modulesName = fileName.replace(/(.*\/)*([^.]+).*/ig,"$2");
            
            if(modulesConent) {
                if(modules[modulesName]) {
                    modules[modulesName] = {
                        ...modules[modulesName],
                        ...modulesConent
                    }
                } else {
                    modules[modulesName] = modulesConent; 
                }
            }
        });
        
        
    } catch (error) {
      // eslint-disable-next-line no-console
      console.log(error);
    }

    return modules;
}

